#include "VisibleRect.h"

CCRect VisibleRect::s_visibleRect;

void VisibleRect::lazyInit()
{
	if (s_visibleRect.size.width == 0.0f && s_visibleRect.size.height == 0.0f)
	{
		CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
		s_visibleRect.origin = pEGLView->getVisibleOrigin();
		s_visibleRect.size = pEGLView->getVisibleSize();
	}
}

CCRect VisibleRect::getVisibleRect()
{
	lazyInit();
	return CCRectMake(s_visibleRect.origin.x, s_visibleRect.origin.y, s_visibleRect.size.width, s_visibleRect.size.height);
}

CCPoint VisibleRect::left()
{
	lazyInit();
	return ccp(s_visibleRect.origin.x, s_visibleRect.origin.y + s_visibleRect.size.height/2);
}

CCPoint VisibleRect::right()
{
	lazyInit();
	return ccp(s_visibleRect.origin.x+s_visibleRect.size.width, s_visibleRect.origin.y + s_visibleRect.size.height/2);
}

CCPoint VisibleRect::top()
{
	lazyInit();
	return ccp(s_visibleRect.origin.x + s_visibleRect.size.width/2, s_visibleRect.origin.y + s_visibleRect.size.height);
}

CCPoint VisibleRect::bottom()
{
	lazyInit();
	return ccp(s_visibleRect.origin.x + s_visibleRect.size.width/2, s_visibleRect.origin.y);
}

CCPoint VisibleRect::center()
{
	lazyInit();
	return ccp(s_visibleRect.origin.x + s_visibleRect.size.width/2, s_visibleRect.origin.y + s_visibleRect.size.height/2);
}

CCPoint VisibleRect::leftTop()
{
	lazyInit();
	return ccp(s_visibleRect.origin.x, s_visibleRect.origin.y + s_visibleRect.size.height);
}

CCPoint VisibleRect::rightTop()
{
	lazyInit();
	return ccp(s_visibleRect.origin.x + s_visibleRect.size.width, s_visibleRect.origin.y + s_visibleRect.size.height);
}

CCPoint VisibleRect::leftBottom()
{
	lazyInit();
	return s_visibleRect.origin;
}

CCPoint VisibleRect::rightBottom()
{
	lazyInit();
	return ccp(s_visibleRect.origin.x + s_visibleRect.size.width, s_visibleRect.origin.y);
}

float VisibleRect::width()
{
	lazyInit();
	return s_visibleRect.size.width;
}

float VisibleRect::height()
{
	lazyInit();
	return s_visibleRect.size.height;
}
